from flask import Blueprint, render_template, request, redirect, url_for, current_app
from app.models.tool import Tool

main_bp = Blueprint('main', __name__)


@main_bp.route('/')
def index():
    featured_tools = Tool.get_featured_tools(limit=4)  # 获取4个推荐工具
    categories = [
        {'name': '文本处理', 'slug': 'text', 'icon': 'fa-font', 'color': 'blue'},
        {'name': '图片处理', 'slug': 'image', 'icon': 'fa-image', 'color': 'green'},
        {'name': '开发工具', 'slug': 'dev', 'icon': 'fa-code', 'color': 'purple'},
        {'name': '数据转换', 'slug': 'data', 'icon': 'fa-calculator', 'color': 'yellow'},
        {'name': '文件转换', 'slug': 'file', 'icon': 'fa-file-pdf', 'color': 'red'}
    ]
    return render_template('index.html', featured_tools=featured_tools, categories=categories)


@main_bp.route('/categories')
def categories():
    all_categories = [
        {
            'name': '文本处理',
            'slug': 'text',
            'icon': 'fa-font',
            'color': 'blue',
            'description': '文本转换、编码解码、格式化等文本处理工具',
            'tools': [
                {'name': '文本转换器', 'slug': 'text-converter', 'description': '大小写转换、首字母大写等基础文本转换功能'},
                {'name': '文本编码/解码', 'slug': 'text-codec', 'description': 'Base64、URL、HTML实体编码解码工具'},
                {'name': '文本比较', 'slug': 'text-diff', 'description': '比较两段文本的差异并高亮显示'}
            ]
        },
        {
            'name': '图片处理',
            'slug': 'image',
            'icon': 'fa-image',
            'color': 'green',
            'description': '图片压缩、格式转换、编辑等图片处理工具',
            'tools': [
                {'name': '图片压缩', 'slug': 'image-compress', 'description': 'JPG/PNG图片压缩，保持高质量的同时减小体积'},
                {'name': '图片格式转换', 'slug': 'image-convert', 'description': 'JPG、PNG、WEBP、GIF等格式互转'},
                {'name': '图片编辑', 'slug': 'image-edit', 'description': '裁剪、调整大小、添加水印等基础图片编辑功能'}
            ]
        },
        {
            'name': '开发工具',
            'slug': 'dev',
            'icon': 'fa-code',
            'color': 'purple',
            'description': 'JSON处理、代码格式化、正则测试等开发辅助工具',
            'tools': [
                {'name': 'JSON格式化', 'slug': 'json-formatter', 'description': 'JSON格式化、压缩、验证和转换工具'},
                {'name': '代码格式化', 'slug': 'code-formatter', 'description': 'HTML/CSS/JS等代码格式化和美化工具'},
                {'name': '正则表达式测试', 'slug': 'regex-tester', 'description': '正则表达式在线测试和调试工具'}
            ]
        }
    ]
    return render_template('categories.html', categories=all_categories)


@main_bp.route('/categories/<category_slug>')
def category_detail(category_slug):
    # 根据分类slug获取对应的工具列表
    # 真实环境中应该从数据库获取
    category_info = {
        'text': {
            'name': '文本处理',
            'icon': 'fa-font',
            'color': 'blue',
            'description': '文本转换、编码解码、格式化等文本处理工具'
        },
        'image': {
            'name': '图片处理',
            'icon': 'fa-image',
            'color': 'green',
            'description': '图片压缩、格式转换、编辑等图片处理工具'
        },
        'dev': {
            'name': '开发工具',
            'icon': 'fa-code',
            'color': 'purple',
            'description': 'JSON处理、代码格式化、正则测试等开发辅助工具'
        }
    }
    
    if category_slug not in category_info:
        return redirect(url_for('main.categories'))
    
    # 这里应该查询数据库获取该分类下的工具
    tools = Tool.find_by_category(category_slug)
    if not tools:  # 如果数据库中还没有数据，使用示例数据
        if category_slug == 'text':
            tools = [
                {'name': '文本转换器', 'slug': 'text-converter', 'description': '大小写转换、首字母大写等基础文本转换功能'},
                {'name': '文本编码/解码', 'slug': 'text-codec', 'description': 'Base64、URL、HTML实体编码解码工具'},
                {'name': '文本比较', 'slug': 'text-diff', 'description': '比较两段文本的差异并高亮显示'}
            ]
        elif category_slug == 'image':
            tools = [
                {'name': '图片压缩', 'slug': 'image-compress', 'description': 'JPG/PNG图片压缩，保持高质量的同时减小体积'},
                {'name': '图片格式转换', 'slug': 'image-convert', 'description': 'JPG、PNG、WEBP、GIF等格式互转'},
                {'name': '图片编辑', 'slug': 'image-edit', 'description': '裁剪、调整大小、添加水印等基础图片编辑功能'}
            ]
        elif category_slug == 'dev':
            tools = [
                {'name': 'JSON格式化', 'slug': 'json-formatter', 'description': 'JSON格式化、压缩、验证和转换工具'},
                {'name': '代码格式化', 'slug': 'code-formatter', 'description': 'HTML/CSS/JS等代码格式化和美化工具'},
                {'name': '正则表达式测试', 'slug': 'regex-tester', 'description': '正则表达式在线测试和调试工具'}
            ]
    
    return render_template(
        'category_detail.html',
        category=category_info[category_slug],
        tools=tools
    )


@main_bp.route('/search')
def search():
    query = request.args.get('q', '')
    if not query:
        return redirect(url_for('main.index'))
    
    # 使用MongoDB的文本搜索
    tools = Tool.search(query)
    
    return render_template('search_results.html', query=query, tools=tools) 